package main

import (
	"fmt"
	"io"
	"log"
	"os/exec"
)

func main() {
	//StderrPipe 返回一个管道，该管道将在命令启动时连接到命令的标准错误。
	//
	//Wait 会在看到命令退出后关闭管道，所以大多数调用者不需要自己关闭管道。
	//因此，在管道的所有读取完成之前调用 Wait 是不正确的。 出于同样的原因，使用 StderrPipe 时使用 Run 是不正确的。
	//有关惯用用法，请参阅 StdoutPipe 示例。

	cmd := exec.Command("sh", "-c", "echo stdout; echo 1>&2 stderr")
	stderr, err := cmd.StderrPipe()
	if err != nil {
		log.Fatal(err)
	}

	cmd.Start()
	slurp, _ := io.ReadAll(stderr)
	fmt.Printf("%s\n", slurp)
	cmd.Wait()
}
